#ifndef __Ogre7zPlugin_H__
#define __Ogre7zPlugin_H__
#pragma once

// Include stuff
#include "Ogre7zPrerequisites.h"

#include <OgrePlugin.h>

namespace Ogre
{
	/**
	 * @brief Plugin instance for Ogre 7zip
	 */
	class Arcive7zPlugin : public Plugin
	{
	public:
		/**
		 * @brief Default constructor.
		 */
		Arcive7zPlugin();

		/**
		 * @brief Virtual destructor.
		 */
		virtual ~Arcive7zPlugin();

		/**
		 * @brief Overridden from Plugin
		 * @copydoc Plugin::getName
		 */
		const String& getName() const;

		/**
		 * @brief Overridden from Plugin
		 * @copydoc Plugin::install
		 */
		void install();

		/**
		 * @brief Overridden from Plugin
		 * @copydoc Plugin::initialise
		 */
		void initialise();
		
		/**
		 * @brief Overridden from Plugin
		 * @copydoc Plugin::shutdown
		 */
		void shutdown();

		/**
		 * @brief Overridden from Plugin
		 * @copydoc Plugin::uninstall
		 */
		void uninstall();

	protected:
		/// The instance of the factory for 7zip archive
		SevenZipArchiveFactory* mSevenZipArchiveFactory;
	};

} // end of namespace Ogre

#endif // include guard, end of #ifndef __Ogre7zPlugin_H__
